#pragma once

#include <iostream>
#include <memory>


#define Animal_ptr std::shared_ptr<Animal>

// 纯虚函数，不能实例化
class Animal
{
protected:
    /* data */
    std::string name;
public:
    Animal();
    Animal(std::string name);
    virtual ~Animal();

    /**
     * 模拟叫声接口
     */
    virtual void Shout() const = 0;
};